      SUBROUTINE SETUP
      RETURN
      END
C   HS114
      BLOCK DATA
      INCLUDE 'BLOCO.INC'
      INTEGER I,J
      DATA NAME/'HS114'/
      DATA (X(I),I=1,10)
     F     /1745.D0,12.D3,11.D1,3048.D0,1974.D0,89.2D0,92.8D0,8.D0,
     1       3.6D0,145.D0/
      DATA N/10/ , NH/ 3/ , NG/28/
      DATA DEL0/1.00D0/ ,TAU0/1.D0/ ,TAU/.1D0/
      DATA (GUNIT(1,J),J=12,31)/20*1/,(GUNIT(3,I),I=12,31)/10*1,10*-1/,
     F     (GUNIT(2,I),I=12,31)/1,2,3,4,5,6,7,8,9,10,
     F     1,2,3,4,5,6,7,8,9,10/
     F     ,((GUNIT(I,J),I=1,3),J=0,11)/-1,0,0,-1,0,0,-1,0,0,-1,0,0,
     F     -1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0/
      END
      SUBROUTINE EF(X,FX)
      INCLUDE 'FUCO.INC'
      DOUBLE PRECISION FX,X(NX)
      ICF=ICF+1
      FX=5.04D0*X(1)+.035D0*X(2)+10.D0*X(3)+3.36D0*X(5)-.063D0*X(4)*X(7)
      RETURN
      END
      SUBROUTINE EGRADF(X,GRADF)
      INCLUDE 'FUCO.INC'
      INTEGER J
      DOUBLE PRECISION X(NX),GRADF(NX),A(10)
      SAVE A
      DATA A/5.04D0,0.035D0,10.D0,0.D0,3.36D0,5*0.D0/
      ICGF=ICGF+1
      DO      100      J=1,10
      GRADF(J)=A(J)
 100  CONTINUE
      GRADF(4)=-0.063D0*X(7)
      GRADF(7)=-0.063D0*X(4)
      RETURN
      END
      SUBROUTINE EH(I,X,HXI)
      INCLUDE 'FUCO.INC'
      INTEGER I
      DOUBLE PRECISION X(NX),HXI
      CRES(I)=CRES(I)+1
      GOTO (100,200,300),I
  100 CONTINUE
      HXI=1.22D0*X(4)-X(1)-X(5)
      RETURN
  200 CONTINUE
      HXI=9.8D4*X(3)/(X(4)*X(9)+1.D3*X(3))-X(6)
      RETURN
  300 CONTINUE
      HXI=(X(2)+X(5))/X(1)-X(8)
      RETURN
      END
      SUBROUTINE EGRADH(I,X,GRADHI)
      INCLUDE 'FUCO.INC'
      INTEGER I,J
      DOUBLE PRECISION X(NX),GRADHI(NX),T,T1
      CGRES(I)=CGRES(I)+1
      DO      100      J=1,10
      GRADHI(J)=0.D0
  100 CONTINUE
      GOTO(200,300,400),I
  200 CONTINUE
      GRADHI(1)=-1.D0
      GRADHI(4)=1.22D0
      GRADHI(5)=-1.D0
      RETURN
  300 CONTINUE
      T=9.8D4/(X(4)*X(9)+1.D3*X(3))
      T1=T/(X(4)*X(9)+1.D3*X(3))*X(3)
      GRADHI(3)=T-1.D3*T1
      GRADHI(4)=-X(9)*T1
      GRADHI(9)=-X(4)*T1
      GRADHI(6)=-1.D0
      RETURN
  400 CONTINUE
      GRADHI(1)=-(X(2)+X(5))/X(1)**2
      GRADHI(2)=1.D0/X(1)
      GRADHI(5)=GRADHI(2)
      GRADHI(8)=-1.D0
      RETURN
      END
      SUBROUTINE EG(I,X,GXI)
      INCLUDE 'FUCO.INC'
      INTEGER I,K
      DOUBLE PRECISION X(NX),OG(10),UG(10),A,B,C,D,T,GXI
      SAVE A,B,C,D,UG,OG
      DATA A/.99D0/, B/.9D0/, C/2.01010101010101D-2/, D/
     1       2.11111111111111D-1/
      DATA OG/2.D3,16.D3,1.2D2,5.D3,2.D3,93.D0,95.D0,12.D0,4.D0,162.D0/
      DATA UG/5*1.D-5,85.D0,90.D0,3.D0,1.2D0,145.D0/
      IF ( GUNIT(1,I+NH) .EQ. -1 ) CRES(I+NH)=CRES(I+NH)+1
      IF(I .GT. 8)      GOTO 500
      K=(I+1)/2
      GOTO(100,200,300,400),K
  100 CONTINUE
      T=35.82D0-.222D0*X(10)-B*X(9)
      IF(K+K .EQ. I)    T=-T+X(9)*D
      GXI=T
      RETURN
  200 CONTINUE
      T=-133.D0+3.D0*X(7)-A*X(10)
      IF(K+K .EQ. I)    T=-T+C*X(10)
      GXI=T
      RETURN
  300 CONTINUE
      T=1.12D0*X(1)+.13167D0*X(1)*X(8)-.00667D0*X(1)*X(8)**2-A*X(4)
      IF(K+K .EQ. I)    T=-T+C*X( 4)
      GXI=T
      RETURN
  400 CONTINUE
      T=57.425D0+1.098D0*X(8)-.038D0*X(8)**2+.325D0*X(6)-A*X(7)
      IF(K+K .EQ. I)    T=-T+C*X( 7)
      GXI=T
      RETURN
  500 CONTINUE
      IF(I .GT. 18)   GXI=OG(I-18)-X(I-18)
      IF(I .LE. 18)   GXI=X(I-8)-UG(I-8)
      END
      SUBROUTINE EGRADG(I,X,GRADGI)
      INCLUDE 'FUCO.INC'
      INTEGER I,J,K
      DOUBLE PRECISION X(NX) ,GRADGI(NX),A,B,C,D
      SAVE A,B,C,D
      DATA A/.99D0/, B/.9D0/, C/1.01010101010101D0 /, D/
     1       1.11111111111111D0/
       DO     50       J=1,NX
       GRADGI(J)=0.D0
   50  CONTINUE
      IF(I .GT. 8)     GOTO 500
      K=(I+1)/2
      GOTO(100,200,300,400),K
  100  CONTINUE
      IF(K+K .EQ. I)      GOTO 150
      GRADGI(9)=-B
      GRADGI(10)=-.222D0
      RETURN
  150 CONTINUE
      GRADGI( 9)= 1.D0/B
      GRADGI(10)= .222D0
      RETURN
  200 CONTINUE
      IF(K+K .EQ. I)      GOTO 250
      GRADGI( 7)=3.D0
      GRADGI(10)=-A
      RETURN
  250 CONTINUE
      GRADGI( 7)=-3.D0
      GRADGI(10)=  1.D0/A
      RETURN
  300 CONTINUE
      GRADGI( 1)=1.12D0+.13167D0*X(8)-.00667D0*X(8)**2
      GRADGI( 4)= -A
      GRADGI( 8)=.13167D0*X(1)-.01334D0*X(1)*X(8)
      IF(K+K .NE. I)      RETURN
      GRADGI( 1)=-GRADGI(1)
      GRADGI( 8)=-GRADGI(8)
      GRADGI( 4)=  1.D0/A
      RETURN
  400 CONTINUE
      GRADGI( 6)=.325D0
      GRADGI( 7)= -A
      GRADGI( 8)=1.098D0-.076D0*X(8)
      IF(K+K .NE. I)      RETURN
      GRADGI( 6)=-.325D0
      GRADGI( 7)=1.D0/A
      GRADGI( 8)=-GRADGI(8)
      RETURN
  500 CONTINUE
      IF(I .GT. 18)     GRADGI(I-18)=-1.D0
      IF(I .LE. 18)     GRADGI(I-8)=1.D0
      RETURN
      END
